class Solution(object):
    def climbStairs(self, n):
        """
        :type n: int
        :rtype: int
        """
        # 边界情况处理
        if n == 1:
            return 1
        if n == 2:
            return 2

        # DP数组定义和初始化
        dp = [0] * (n + 1)
        dp[1] = 1  # 爬到第1阶有1种方法
        dp[2] = 2  # 爬到第2阶有2种方法

        # 状态转移
        for i in range(3, n + 1):
            dp[i] = dp[i - 1] + dp[i - 2]

        return dp[n]

# 主函数
if __name__ == "__main__":
    n = int(input("请输入楼梯阶数 n: "))
    solution = Solution()
    result = solution.climbStairs(n)
    print(f"爬到第 {n} 阶楼梯有 {result} 种方法")